Page({
  data: {
    recentDocs: [],
    showGuide: true,
    isMultiSelectMode: false, // 是否处于多选模式
    selectedDocs: [] // 已选择的文档索引数组
  },
  
  onLoad: function() {
    // 检查是否有历史记录
    this.loadRecentDocs();
  },
  
  onShow: function() {
    // 每次显示页面时刷新文档列表
    this.loadRecentDocs();
  },
  
  // 加载最近的文档
  loadRecentDocs: function() {
    const recentDocs = wx.getStorageSync('recentDocs') || [];
    this.setData({
      recentDocs: recentDocs,
      showGuide: recentDocs.length === 0
    });
  },
  
  // 跳转到扫描页面
  goToScan: function() {
    // 清空当前应用中的扫描图片
    getApp().clearScanImages();
    wx.navigateTo({
      url: '/pages/scan/scan'
    });
  },
  
  // 打开历史文档
  openDocument: function(e) {
    // 多选模式下不打开文档
    if (this.data.isMultiSelectMode) return;
    
    const index = e.currentTarget.dataset.index;
    const doc = this.data.recentDocs[index];
    
    // 将文档信息传递到预览页面
    wx.navigateTo({
      url: `/pages/preview/preview?docId=${doc.id}&title=${doc.title}`
    });
  },
  
  // 进入多选模式
  enterMultiSelectMode: function(e) {
    if (this.data.isMultiSelectMode) return;
    
    const index = e.currentTarget.dataset.index;
    let recentDocs = this.data.recentDocs;
    
    // 为每个文档添加selected属性
    recentDocs = recentDocs.map((doc, i) => {
      return {
        ...doc,
        selected: i === index // 只选中长按的文档
      };
    });
    
    this.setData({
      isMultiSelectMode: true,
      recentDocs: recentDocs,
      selectedDocs: [index]
    });
    
    // 震动反馈
    wx.vibrateShort({
      type: 'medium'
    });
  },
  
  // 切换文档选择状态
  toggleSelectDoc: function(e) {
    if (!this.data.isMultiSelectMode) return;
    
    const index = e.currentTarget.dataset.index;
    let recentDocs = this.data.recentDocs;
    let selectedDocs = this.data.selectedDocs;
    
    // 切换选择状态
    recentDocs[index].selected = !recentDocs[index].selected;
    
    // 更新选择列表
    if (recentDocs[index].selected) {
      selectedDocs.push(index);
    } else {
      selectedDocs = selectedDocs.filter(i => i !== index);
    }
    
    this.setData({
      recentDocs: recentDocs,
      selectedDocs: selectedDocs
    });
  },
  
  // 退出多选模式
  exitMultiSelectMode: function() {
    let recentDocs = this.data.recentDocs;
    
    // 清除所有选择状态
    recentDocs.forEach(doc => {
      doc.selected = false;
    });
    
    this.setData({
      isMultiSelectMode: false,
      recentDocs: recentDocs,
      selectedDocs: []
    });
  },
  
  // 全选
  selectAll: function() {
    let recentDocs = this.data.recentDocs;
    let selectedDocs = [];
    
    // 检查是否已经全选
    const allSelected = recentDocs.every(doc => doc.selected);
    
    // 如果已经全选，则取消全选；否则全选
    recentDocs.forEach((doc, index) => {
      doc.selected = !allSelected;
      if (!allSelected) {
        selectedDocs.push(index);
      }
    });
    
    this.setData({
      recentDocs: recentDocs,
      selectedDocs: selectedDocs
    });
  },
  
  // 删除选中的文档
  deleteSelectedDocs: function() {
    if (this.data.selectedDocs.length === 0) return;
    
    wx.showModal({
      title: '确认删除',
      content: `确定要删除选中的${this.data.selectedDocs.length}个文档吗？`,
      success: (res) => {
        if (res.confirm) {
          let recentDocs = this.data.recentDocs;
          const fs = wx.getFileSystemManager();
          
          // 按索引从大到小排序，以便从后往前删除
          const sortedIndices = [...this.data.selectedDocs].sort((a, b) => b - a);
          let successCount = 0;
          let failCount = 0;
          
          // 删除每个选中的文档
          for (const index of sortedIndices) {
            const docToDelete = recentDocs[index];
            if (docToDelete && docToDelete.images) {
              docToDelete.images.forEach(imgPath => {
                try {
                  fs.unlinkSync(imgPath);
                  console.log('文件删除成功:', imgPath);
                } catch (err) {
                  console.error('删除文件失败:', err);
                  failCount++;
                }
              });
            }
            
            // 从列表中移除
            recentDocs.splice(index, 1);
            successCount++;
          }
          
          // 更新存储
          wx.setStorageSync('recentDocs', recentDocs);
          
          // 更新界面
          this.setData({
            recentDocs: recentDocs,
            isMultiSelectMode: false,
            selectedDocs: [],
            showGuide: recentDocs.length === 0
          });
          
          wx.showToast({
            title: `已删除${successCount}个文档`,
            icon: 'success'
          });
        }
      }
    });
  },
  
  // 查看已保存的文件
  viewSavedFiles: function() {
    wx.navigateTo({
      url: '/pages/saved-files/saved-files'
    });
  },
  
  // 显示清除缓存确认对话框
  showClearConfirm: function() {
    wx.showModal({
      title: '清除缓存',
      content: '确定要清除所有缓存数据吗？这将删除所有历史记录和临时文件。',
      confirmText: '清除',
      confirmColor: '#FF4D4F',
      success: (res) => {
        if (res.confirm) {
          this.clearAllCache();
        }
      }
    });
  },
  
  // 清除所有缓存
  clearAllCache: function() {
    wx.showLoading({
      title: '正在清除缓存...',
    });
    
    try {
      // 获取当前用户的唯一标识
      const userInfo = wx.getStorageSync('userInfo') || {};
      const openId = userInfo.openId || 'default_user';
      
      // 清除文档记录
      wx.removeStorageSync('recentDocs');
      
      // 清除保存的文件记录（用户特定的）
      wx.removeStorageSync(`savedFiles_${openId}`);
      
      // 清除其他可能的缓存
      wx.removeStorageSync('userSettings');
      
      // 清除临时文件
      const fs = wx.getFileSystemManager();
      
      // 获取临时目录下的文件
      fs.readdir({
        dirPath: `${wx.env.USER_DATA_PATH}`,
        success: (res) => {
          console.log('获取临时文件成功:', res.files);
          
          // 删除每个文件
          res.files.forEach(file => {
            try {
              fs.unlinkSync(`${wx.env.USER_DATA_PATH}/${file}`);
              console.log('删除文件成功:', file);
            } catch (err) {
              console.error('删除文件失败:', file, err);
            }
          });
          
          wx.hideLoading();
          wx.showToast({
            title: '缓存已清除',
            icon: 'success'
          });
          
          // 刷新页面
          this.setData({
            recentDocs: [],
            showGuide: true
          });
        },
        fail: (err) => {
          console.error('获取临时文件失败:', err);
          wx.hideLoading();
          wx.showToast({
            title: '部分缓存已清除',
            icon: 'success'
          });
          
          // 刷新页面
          this.setData({
            recentDocs: [],
            showGuide: true
          });
        }
      });
    } catch (err) {
      console.error('清除缓存失败:', err);
      wx.hideLoading();
      wx.showToast({
        title: '清除缓存失败',
        icon: 'none'
      });
    }
  }
})